package marketplace.web.facebook;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import marketplace.ejb.interfaces.IUsuarioEJB;
import marketplace.jpa.datas.DataCliente;
import marketplace.jpa.datas.DataRegistroAcceso;
import marketplace.jpa.datas.Estado;
import marketplace.web.beans.LoginBean;
import facebook4j.Facebook;
import facebook4j.FacebookException;

public class CallbackServlet extends HttpServlet {
    private static final long serialVersionUID = 6305643034487441839L;

    @EJB(mappedName = "java:global/Marketplace/MarketEJB/CTRLUsuarioEJB") 
    IUsuarioEJB cliente;

    public CallbackServlet(){ super(); }
    
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Facebook facebook = (Facebook) request.getSession().getAttribute("facebook");
        String oauthCode = request.getParameter("code");
        
        try {
            facebook.getOAuthAccessToken(oauthCode);
        
            
            //Si no existe el mail me registro el cliente de facebook para las compras
            if (!cliente.existeCliente(facebook.getMe().getEmail())){
            	
				cliente.guardarCliente(new DataCliente(
						facebook.getMe().getUsername(), 
						facebook.getMe().getEmail(), 
						facebook.getMe().getName(),
						facebook.getMe().getLastName(), 
						"", 
						"", 
						' ', 
						facebook.getMe().getBirthday(), 
						Estado.ACTIVO));
	        }
            
            System.out.println("CallbackServlet Facebook :   -    "+facebook.getMe().getLastName());
            
    		DataRegistroAcceso dr = new DataRegistroAcceso();
    		
    		dr.setCliente(facebook.getMe().getEmail());
    		SimpleDateFormat f =new SimpleDateFormat("dd/MM/yy");
    		Date hoy = new Date();		
     		String formattedDate = f.format(hoy);
     		dr.setFechaAcceso(formattedDate);
     		
    		cliente.registrarAcceso(dr);
            
    		LoginBean.setLogueado(true);
    		
    		request.getSession().setAttribute("mailUsuario",facebook.getMe().getEmail());
    		request.getSession().setAttribute("tipoUsuario", "Cliente");
            
        } catch (FacebookException e) {
            throw new ServletException(e);
        } catch (Exception e) {
        	System.out.println("ERROR: CallbackServlet: facebook ------ " + e.getMessage());
        	e.printStackTrace();
		}
        
        response.sendRedirect(request.getContextPath() + "/");
        
    }
}
